/*
 * interface_persistencia.h
 *
 *  Created on: 12/11/2012
 */



/* Controle visando evitar inclusoes multiplas. */
#ifndef MOD_PERSISTENCIA
#define MOD_PERSISTENCIA


/* Controle visando identificar os servidores. */
#ifdef SERVIDOR_PERSISTENCIA_POSTAGENS
#define EXT_MOD_PERSISTENCIA_POSTAGENS
#else
#define EXT_MOD_PERSISTENCIA_POSTAGENS extern
#endif


#ifdef SERVIDOR_PERSISTENCIA_USUARIOS
#define EXT_MOD_PERSISTENCIA_USUARIOS
#else
#define EXT_MOD_PERSISTENCIA_USUARIOS extern
#endif


#include <stdbool.h>
#include "../Camada_Apresentacao/interface_apresentacao.h"

/* Declaracoes de constantes usadas. */
#define DATABASE_USUARIOS "database_usuarios.txt"
#define DATABASE_USUARIOS_AUXILIAR "database_usuarios_aux.txt"
#define DATABASE_POSTAGENS "database_postagens.txt"
#define DATABASE_POSTAGENS_AUXILIAR "database_postagens_aux.txt"
#define DATABASE_COMENTARIOS "database_comentarios.txt"
#define DATABASE_COMENTARIOS_AUXILIAR "database_comentarios_aux.txt"
#define DATABASE_IDENTIFICADORES "database_identificadores.txt"



/* Declaracoes dos prototipos das funcoes. */
EXT_MOD_PERSISTENCIA_POSTAGENS int fatorial_postagens(int valor);


EXT_MOD_PERSISTENCIA_USUARIOS int cadastrar_usuario_persistencia(char nome_de_usuario[11], char senha[7], int identificador);
EXT_MOD_PERSISTENCIA_USUARIOS int autenticar_usuario_persistencia(char nome_de_usuario[11], char senha[7]);
EXT_MOD_PERSISTENCIA_USUARIOS int alterar_cadastro_persistencia(char nome_de_usuario[11], char senha[7], char novo_nome_de_usuario[11], char nova_senha[7]);
EXT_MOD_PERSISTENCIA_USUARIOS int encerrar_cadastro_persistencia(char nome_de_usuario[11], char senha[7]);
EXT_MOD_PERSISTENCIA_USUARIOS Usuario* listar_usuarios_persistencia();


EXT_MOD_PERSISTENCIA_POSTAGENS int cadastrar_postagem_persistencia(char texto_postagem[31], int identificador_postagem, bool comentavel, int identificador_autor,char data[11]);
EXT_MOD_PERSISTENCIA_POSTAGENS int cadastrar_comentario_persistencia(char texto_comentario[21], int identificador_comentario, int identificador_postagem, int identificador_autor, char data[11]);
EXT_MOD_PERSISTENCIA_POSTAGENS Postagem* busca_postagem_persistencia(int identificador_autor);
EXT_MOD_PERSISTENCIA_POSTAGENS Comentario* busca_comentario_persistencia(int identificador_autor);
EXT_MOD_PERSISTENCIA_POSTAGENS int autenticar_postagem_persistencia(int identificador_postagem);
EXT_MOD_PERSISTENCIA_POSTAGENS int autenticar_comentario_persistencia(int identificador_comentario);
EXT_MOD_PERSISTENCIA_POSTAGENS int avaliar_postagem_persistencia(int identificador_postagem, float avaliacao);
EXT_MOD_PERSISTENCIA_POSTAGENS int remover_postagem_persistencia(int identificador_postagem, int verifica_autoria);
EXT_MOD_PERSISTENCIA_POSTAGENS int remover_comentario_persistencia(int identificador_comentario, int verifica_autoria);
EXT_MOD_PERSISTENCIA_POSTAGENS int remover_postagens_usuario_persistencia(int identificador_autor);
EXT_MOD_PERSISTENCIA_POSTAGENS int remover_comentarios_usuario_persistencia(int identificador_autor);
EXT_MOD_PERSISTENCIA_POSTAGENS Postagem* listar_postagens_persistencia();
EXT_MOD_PERSISTENCIA_POSTAGENS Comentario* listar_comentarios_persistencia(int identificador_postagem);
EXT_MOD_PERSISTENCIA_POSTAGENS int verificar_identificador_livre(int identificador);

#endif
